package com.example.travel.mapper;

import com.example.travel.bean.HotelBean;
import com.example.travel.bean.SiteBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface HotelMapper {
    List<HotelBean> getHotelList();
    int addHotel(HotelBean hotel);
    int deleteHotel(int hotelID);
    int updateHotel(HotelBean hotel);
    HotelBean getHotelById(int hotelID);
    
    List<HotelBean> getHotelListWithPagination(String searchKeyword, int offset, int pageSize);
    int getHotelCount(String searchKeyword);
    
    /**
     * 扣除民宿余量（带锁机制，确保余量充足时才扣除）
     * @param hotelID 民宿ID
     * @param num 需要扣除的数量
     * @return 影响的行数，1表示成功，0表示余量不足
     */
    int deductHotelRemain(@Param("hotelID") int hotelID, @Param("num") int num);
    
    /**
     * 增加民宿余量（用于回滚）
     * @param hotelID 民宿ID
     * @param num 需要增加的数量
     * @return 影响的行数
     */
    int addHotelRemain(@Param("hotelID") int hotelID, @Param("num") int num);
}
